package com.qigao.mall.api;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import com.qigao.mall.commons.dto.PromGroupCondDto;
import com.qigao.mall.commons.dto.PromGroupCreateDto;
import com.qigao.mall.commons.dto.PromGroupResultDto;
import com.qigao.mall.commons.enums.Result;
import com.qigao.mall.jdbc.model.TbOrderDetail;
import com.qigao.mall.jdbc.model.TbOrderTotal;

import java.math.BigDecimal;
import java.util.List;

public interface PromGroupService {
    Result<String> create(PromGroupCreateDto promGroupCreateDto);

    Result<List<PromGroupResultDto>> findByItemNo(String itemNo);

    Result<PromGroupResultDto> findByGroupNo(String groupNo);

    void payNotify(String paySeqNo, BigDecimal payAmt,String orderNo, String buylerId);

    void createPromGroupDetail(String groupNo,TbOrderTotal tbOrderTotal, List<TbOrderDetail> tbOrderDetails);

    List<PromGroupResultDto> selectByOrderNos(List<String> orderNos);

    Result<Boolean> checkJoinGroup(String groupNo, String currentUserNo);

    Result<PageInfo<PromGroupResultDto>> findByItemNoAndGroupNo(String itemNo, String groupNo);

    /**
     * 自动结算
     */
    void autoSettle();

    /**
     * 自动退款
     */
    void autoRefund();

    /**
     * 自动关闭
     */
    void autoClose();

    PromGroupResultDto selectByOrderNo(String orderNo);

    Result<PageInfo<PromGroupResultDto>> listPage(PromGroupCondDto promGroupCondDto);

    List<PromGroupResultDto> findByCond(PromGroupCondDto promGroupCondDto);

    boolean checkCanPay(String orderNo);
}
